#pragma once

#include <boost/signal.hpp>
#include "../models/CardsCollection.h"
#include "../models/Player.h"

namespace Domain {
	namespace Helpers {
		class CardsDealer
		{
			std::vector<Players::Player*> players;
			Cards::CardsCollection cards;

		public:
			CardsDealer(Players::PlayersQueue players, Cards::CardsCollection cards);

			Cards::CardSet deal();
		protected:
			template <typename T> Cards::Card* pickSearchedCard(T&);
			void dealRemainingCards(std::vector<Cards::Card*>&);
		};
	}
}

